package jmine.tec.utils.register;

import java.util.List;

import org.springframework.beans.factory.InitializingBean;

/**
 * Registra os elementos de uma coleção em um container receptor, especificados pelo Spring.
 * 
 * @author piercio
 * @param <T> a classe dos elementos que serão registrados.
 */
public class Registrar<T> implements InitializingBean {

    private Receiver<T> receiver;

    private List<T> registers;

    /**
     * Define o receptor em que os elementos serão registrado.
     * 
     * @param receiver o receptor em que os elementos serão registrado.
     */
    public void setReceiver(Receiver<T> receiver) {
        this.receiver = receiver;
    }

    /**
     * Define a lista de elementos que serão registrados no receptor.
     * 
     * @param registers a lista de elementos que serão registrados no receptor.
     */
    public void setRegisters(List<T> registers) {
        this.registers = registers;
    }

    /**
     * Registra os elementos no receptor.
     */
    public void afterPropertiesSet() {
        this.receiver.register(this.registers);

        this.receiver = null;
        this.registers = null;
    }
}
